package com.ventas.action;

import static com.opensymphony.xwork2.Action.ERROR;
import static com.opensymphony.xwork2.Action.SUCCESS;
import com.ventas.dao.*;
import com.ventas.bean.*;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ventas.bean.Producto;
import com.ventas.dao.ProductoDao;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;

public class UsuarioAction extends ActionSupport {
    String txtUsuario;
    String txtPassword;
    private List<Producto> chartProductosVendidos=null;
        List<Producto> listadoProducto = null;
   List<Producto> lstProductoChar;
    
    Usuario usuario;      
//    
    public String Login()throws Exception{        
        Map sesion = ActionContext.getContext().getSession(); 
        ListadoProductos();
        if(sesion.get("sesUsuario")==null){            
            try{
                UsuarioDao usuarioDao=new UsuarioDao();
                usuario=usuarioDao.Login(txtUsuario, txtPassword);

            }catch(Exception e){
                System.out.println("Error UsuarioAction Login"+e.getMessage());
                e.printStackTrace();
            }
            if(usuario!=null){
                Map<String,Object> sesionUsuario = ActionContext.getContext().getSession();            
                sesionUsuario.put("sesUsuario",usuario);                
                System.out.println("Exito UsuarioAction Login");
                
                return SUCCESS;
            }else{
                addActionError("Datos Incorrectos");
                return ERROR;
            }
        }else{           
            return SUCCESS;
        }
        
    }
    public String Logout() throws Exception{
        
        Map ses = ActionContext.getContext().getSession();
        ses.put("sesUsuario", null);
        return SUCCESS;
    }   
    
    public String verificarSesion() throws Exception{
        String s="0";
        Map sesion = ActionContext.getContext().getSession(); 
        if(sesion.get("sesUsuario")==null){  
            s= "5";
        }
        
        HttpServletResponse res = ServletActionContext.getResponse();
        PrintWriter pwr = res.getWriter();
        pwr.println(s);
        pwr.flush();
        return SUCCESS;
    }
    
    


   
   public String ListadoProductos() throws Exception {
       
        listadoProducto= new ArrayList<>();
        chartProductosVendidos= new ArrayList<>();
        
     
        try {
            ProductoDao productoDao = new ProductoDao();
            
            listadoProducto=productoDao.listadoProductosActivos();
            chartProductosVendidos=productoDao.listadoProductosMasVendidos();
            
            System.out.println("Exito login char");
        } catch (Exception e) {
            System.out.println("Error de Action login" + e.getMessage());
            e.printStackTrace();
        }
        if (listadoProducto.isEmpty()) {
            return ERROR;
        } else {
            return SUCCESS;
        }
    }
    public List<Producto> getChartProductosVendidos() {
        return chartProductosVendidos;
    }

    public void setChartProductosVendidos(List<Producto> chartProductosVendidos) {
        this.chartProductosVendidos = chartProductosVendidos;
    }

    public List<Producto> getListadoProducto() {
        return listadoProducto;
    }

    public void setListadoProducto(List<Producto> listadoProducto) {
        this.listadoProducto = listadoProducto;
    }

    public List<Producto> getLstProductoChar() {
        return lstProductoChar;
    }

    public void setLstProductoChar(List<Producto> lstProductoChar) {
        this.lstProductoChar = lstProductoChar;
    }

    public String getTxtUsuario() {
        return txtUsuario;
    }

    public void setTxtUsuario(String txtUsuario) {
        this.txtUsuario = txtUsuario;
    }

    public String getTxtPassword() {
        return txtPassword;
    }

    public void setTxtPassword(String txtPassword) {
        this.txtPassword = txtPassword;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    

    
    
    
}
